package com.wh1200.mybatis.xmlless.model

import com.wh1200.mybatis.xmlless.model.base.BaseClassWrapper
import com.wh1200.mybatis.xmlless.util.TableInfoProvider


/**
 *
 * @author 吴昊
 * @date 2024/01/18
 * @version 1.0
 * @since v4.0.0
 */
data class JoinObjectInfo(
    /** 关联查询目标对象用于关联的属性 */
    val joinOnTargetProperty: String,
    /** 当前对象用于关联目标对象的属性 */
    val joinOnThisProperty: String,
    /** 表别名，用于识别条件中的属性，查询返回的属性等 */
    val alias: String,
    /** 关联对象对应的数据库表信息 */
    val joinEntityClassWrapper: BaseClassWrapper
) {

  fun getJoinTableInfo(): XmllessTableInfo {
    return TableInfoProvider.getOrInitXmllessTableInfo(joinEntityClassWrapper)
  }

  /** 关联的表名 */
  fun getTableName(): TableName {
    return TableName(getJoinTableInfo().tableName, alias)
  }
}
